<?php
namespace Foam\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\EventManager\EventManagerInterface;
use Zend\View\Model\ViewModel;
use Zend\View\Model\JsonModel;

class SyntheseController extends AbstractActionController
{
    protected $familleTable;
    protected $ssfamilleTable;
    protected $produitTable;
    protected $carteTable;
    protected $carteproduitTable;
    
    public function setEventManager(EventManagerInterface $events)
    {
        parent::setEventManager($events);
 
        $controller = $this;
        $events->attach('dispatch', function ($e) use ($controller) {
            $controller->layout()->setTemplate('layout/foam');
        }, 100);
 
        return $this;
    }   
    
    public function getFamilleTable()
    {
        if (!$this->familleTable) {
            $sm = $this->getServiceLocator();
            $this->familleTable = $sm->get('Foam\Model\FamilleTable');
        }
        return $this->familleTable;
    }
    
    public function getssFamilleTable()
    {
        if (!$this->ssfamilleTable) {
            $sm = $this->getServiceLocator();
            $this->ssfamilleTable = $sm->get('Foam\Model\SousFamilleTable');
        }
        return $this->ssfamilleTable;
    }
    
    public function getProduitTable()
    {
        if (!$this->produitTable) {
            $sm = $this->getServiceLocator();
            $this->produitTable = $sm->get('Foam\Model\ProduitTable');
        }
        return $this->produitTable;
    }
    
    public function getCarteTable()
    {
        if (!$this->carteTable) {
            $sm = $this->getServiceLocator();
            $this->carteTable = $sm->get('Foam\Model\CarteTable');
        }
        return $this->carteTable;
    }
    
    public function getCarteProduitTable()
    {
        if (!$this->carteproduitTable) {
            $sm = $this->getServiceLocator();
            $this->carteproduitTable = $sm->get('Foam\Model\CarteProduitTable');
        }
        return $this->carteproduitTable;
    }
    
    public function indexAction()
    {
        return new ViewModel(array(
            'cartes' => $this->getCarteTable()->fetchAll(),
        ));
    }
    
    public function syntheseAction() {
        $tabProduits = array();
        
        // Pour la carte
        $idCarte = $this->params('id');
        $carte = $this->getCarteTable()->getCarte($idCarte);

        // Pour les produits
        $produits = $this->getCarteProduitTable()->getCarteSynthese(array($carte->libelle));
        foreach($produits as $produit) {
            $tabProduits[$produit['flibelle']][$produit['libelle']] = $produit['libelle'];
        }
        
        $variables = array(            
            'produits' => $tabProduits,
            'carte' => $carte,
        );
        
        $viewModel = new ViewModel();
        $viewModel->setVariables($variables);
        $viewModel->setTerminal(true);
        
        return $viewModel;
    }
}